/*
 * Copyright 2007 Yannick Versley / Univ. Tuebingen
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package edu.hit.irlab.coref.mentionfinder;

import java.util.EnumSet;

import nlpeap.feature.basictypes.GenderType;
import nlpeap.feature.basictypes.NumberType;
import nlpeap.knowledge.SemanticClass.SemanticClassEnum;

/**
 * contains all the linguistic (as opposed to implementation-dependent)
 * information on a mention.
 * Modified for Chinese by chuter at 8:58 AM, 26 APR, 2010 
 * @author versley, chuter
 */
public class MentionType {
    public enum Features
    {
        isProperName, //whether the Mention is a ProperName, like "IBM", "Google" etc.
        isPronoun,    //whether the Mention is a Pronoun, like "he", "she" etc.
        //isDefinite, 
        isDemonstrative, //whether the Mention starts with "this" or "that" etc.
        isFirstSecondPerson, 
        isPersPronoun, 
        isPersonName,
        isDemPronoun, //"DemPronoun", like "this", "that" etc.
        isDemNominal; //"DemNominal", like "this album" 
    }
    public EnumSet<Features> features = EnumSet.noneOf(Features.class);
    public GenderType gender = GenderType.UNKNOWN;
    public NumberType number = NumberType.UNKNOWN;
    public SemanticClassEnum semanticClass = SemanticClassEnum.UNKNOWN;
    
    public String toString()
    {
    	StringBuffer ret_strBuf = new StringBuffer().append("the mentionType:\n");
    	for (Features feature : Features.values())
    		ret_strBuf.append(feature).append(":").append(
    				features.contains(feature)).append("\n");
    	ret_strBuf.append("gender: ").append(gender).append("\n");
    	ret_strBuf.append("number: ").append(number).append("\n");
    	ret_strBuf.append("semantic class: ").append(semanticClass);
    	return ret_strBuf.toString();
    }
}
